0x01 简介
这篇论文是一篇关于匹配系统算法的论文(2012年),那会机器学习才刚开始兴起。
主要讲的是《Ghost Recon Online》(中文名称:幽灵行动)游戏研发beta测试的时候,对匹配系统算法做的一些研究,论文中提到的算法并没有在线上使用,主要是离线验证。
从题目来看,首先就讲了传统基于能力分来进行匹配的问题。主要有下面两个问题:
- 能力分是单维度的,就一个数值,并不能很好的刻画玩家的能力。玩家有他擅长的和不擅长的
- 使用能力分进行匹配,有一个假设:平衡的比赛是有趣的,玩家是满意的。其实这个假设并不成立,比如FPS中一场平衡的比赛,但是玩家都是喜欢隐藏、等待、埋伏。
这个假设的反面可能是成立的,即不平衡的比赛肯定是无趣的,玩家是不满意的。
这篇论文为了解决这个问题,提出了一个胜率预测模型和一个玩家满意度预测模型来解决这两个问题。
0x02 神经网络结构
胜率预测模型(BalanceNet)
胜率预测模型是一个二分类模型,在线上使用的时候其实是用的输出的概率,即Team A胜Team B的概率,选取胜率最接近0.5的分组方案。
玩家的特征主要分两个维度:
- 玩家的embedding
- 玩家的属性
玩家的embedding是从玩家的历史比赛中学习出来的,对玩家能力多个维度的表征。
玩家的属性主要是玩家的统计特征,比如比赛场次数、胜负数、胜率、KDA相关信息等,其实如果是MMO游戏,有一些玩家角色的一些属性,需要考虑。
网络结构图如下:
论文中是对玩家embedding和属性向量的一些加和,然后输出层使用sigmoid函数,其实从现在来看,不需要这么复杂,可以直接拼接玩家的embedding和属性,然后送入分类模型进行训练。
玩家满意度模型 (FunNet)
先假设有label,一场比赛打完后,玩家有一个满意或不满意的标签,后面会讲怎么算这个标签。
模型输入类似胜率预测模型,但是输入分成三个部分:
- 玩家自身的特征
- 玩家队友的特征(玩家满意度和队友特征相关)
- 整场比赛玩家的特征
也是一个二分类的模型,模型结构如下:
论文中每一个输入都有一个参数矩阵,但是其实也不用,直接拼接送入分类模型即可。
0x03 匹配系统
那么算法如何在实际的匹配系统中使用呢。以1v1系统举例
首先有一个匹配池或者匹配队列,然后随机采样生成一些对局,然后使用胜率模型或者满意度模型来选出比赛质量最好的,然后推送到对战服务器进行开局。
这个流程对于NvN(n>1)可能不太合适,但是我们可以这样来做,首先根据玩家能力值、等待时间、ping值等把玩家划分成一场场的比赛,对于每一场比赛,在随机采样Team A和Team B,然后使用模型选出比赛质量好的进行开局。
论文中的匹配系统处理流程图:
0x04 数据集介绍
整个数据集来自于《Ghost Recon Online》beta测试,每场比赛16给人,每个阵营8个玩家。只有一种地图一种模式。
总计3937场比赛,3444个玩家。
这个数据量其实很小,感觉不太具有说服力。
0x05 实验结果
实验对比基于能力分的2个方案:
- TrueSkill-Team:基于队伍胜负
- TrueSkill-Player:基于玩家局内表现
从胜率预测模型来看,准确率:BalanceNet > TrueSkill-Player > TrueSkill-Team
从玩家满意度模型来看,满意度是会算一个值:Kendall tau,没有具体仔细看是怎么算的
满意度:FunNet > BalanceNet > TrueSkill-Player > TrueSkill-Team
0x06 如何生成玩家满意度Label
论文中提到了一场比赛后,如何得到生产玩家满意度标签的方式,个人觉得还蛮有意思的,单独作为一个点讲一下。
最好的方式,当然是打完比赛问玩家了,比如在对局结束后,弹出一个调查问卷,比如《Dota2》某次匹配系统更新后,就增加了赛后问卷调查。
但是这种对游戏有侵入,需要修改游戏代码,增加问卷系统,在实际应用时,会有一定的困难。
论文中提到的方式是:定义了11维的特征,如果玩家满意度提升,那么这11维度特征会相应增加
这个可以根据专家经验(策划)来定,比如玩家平均生命周期,射出的子弹数,kda,比赛时长等。
但是每个玩家满意度关注的特征不一样,所以对每个玩家选取4个特征,然后初始化权重(和为1),来计算玩家的满意度。
计算后的满意度归一化到0~1,大于等于0.7表示对这场比赛满意,小于等于0.3表示对这场比赛不满意。
0x07 相关工作
最后论文还介绍了下相关工作,主要从3个方面介绍的:匹配系统,能力分,玩家建模
具体的内容大家可以看论文,可以看出来游戏匹配相关的研究还是有一些的,且历史还蛮长的。
0x08 小结一下
整个论文读下来,思路还是蛮清晰的,一些方案我们也在实际系统中有使用。一些点也蛮有意思的,可以在工作中进行尝试,比如玩家满意度。
但是由于发表时间的关系,当时的一些方案设计比较复杂。